#ifndef CTHREADSAFEBUFFER_H
#define CTHREADSAFEBUFFER_H

#include <QDebug>
#include <QMutex>
#include <QWaitCondition>
#include <QQueue>


// 定义一个单例类
class CThreadSafeBuffer
{
    // 缓冲区数据结构
    QQueue<QByteArray> m_buffer;
    mutable QMutex m_mutex;
    QWaitCondition m_notEmpty;

    // 禁止拷贝构造和赋值操作
    Q_DISABLE_COPY(CThreadSafeBuffer)
public:
    CThreadSafeBuffer();
    virtual ~CThreadSafeBuffer(); // 必须虚函数关键字
    static CThreadSafeBuffer* getInstance();
    bool isExists();
    bool isDestroyed();

    // 示例方法，用于演示单例类的功能
    void showMessage(const QString &message);

    // 线程安全操作接口
    void enqueue(const QByteArray& data);
    QByteArray dequeue(int timeout = 0); // 支持超时等待
    bool isEmpty() const;
    int size() const;

};

#endif // CTHREADSAFEBUFFER_H
